package lcof;

import pojo.TreeNode;

import javax.xml.crypto.dsig.keyinfo.RetrievalMethod;

/**
 * @BelongsProject: LeetCode
 * @BelongsPackage: lcof
 * @Author: 江岸
 * @CreateTime: 2021-04-30 22:02
 * @Description: 输入一棵二叉树的根节点，判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1，那么它就是一棵平衡二叉树。
 *
 *  
 *
 * 示例 1:
 *
 * 给定二叉树 [3,9,20,null,null,15,7]
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/ping-heng-er-cha-shu-lcof
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class IsBalanced55 {

    public boolean isBalanced(TreeNode root) {
        return fun(root)!=-1;
    }


    //返回值为子节点的层数
    public int fun(TreeNode node){
        if (node==null) return 0;
        int left = fun(node.left);
        if (left==-1) return -1;
        int right = fun(node.right);
        if (right==-1) return -1;
        //如果当前高度差小于2，则返回该节点高度
        if (Math.abs(left-right)<2) return Math.max(left,right)+1;
        return -1;
    }

}
